<?php namespace Common\Model;
use Hdphp\Model\Model;
//文章管理模型
class Arc extends Model{
	//指定表名
	protected $table="article";
	protected $validate = array(
		array('title','required','文章标题不能为空',3,3),
		array('category_cid','required','分类必须选择',3,3)
	);
	//自动完成
	protected $auto=array(
		//3是必须处理的表单，1，是插入式处理
		//更新时对sendtime字段执行time函数
		array('sendtime','time','function',3,1),
		//修改时对updatatetime字段执行time函数
		array('updatetime','time','function',3,2),
		//更新时对user_uid字段，执行自定义的userUid的函数
		array('user_uid','userUid','method',3,1),
		//更新或者修改时时对thumb字段，执行自定义的thumb的函数
		array('thumb','thumb','method',3,3)
	
	);
	//自定义上传方法函数
	public function thumb(){
		//如果有文件上传
		if(isset($_FILES['thumb'])&& $_FILES['thumb']['error']!=4){
			//执行上传类
			$files=Upload::type('jpg,png,gif')->size(2000000)->make();
			//如果上传成功，返回对应的路径
			if($files){
				//处理缩略的文件名
				$newPath=str_replace('.'.$files[0]['ext'], '_thumb.'. $files[0]['ext'],$files[0]['path']);
				//缩略，返回缩略图的地址
				$thumbPath=Image::thumb($files[0]['path'],$newPath,100,40,2);
				//把缩略图路径存到数据库
				return $thumbPath;
			}
		}
		if($thumb=Q('post.thumb'))
		return $thumb;
		//如果用户没有上传，则返回空字符串存入数据库
		return'';
	}
	//自定义的user_uid的函数方法,记录用户uid
	public function userUid(){
		return $_SESSION['uid'];
		
	}
	//添加文章
	public function store(){
		//一，触发两张表的自动验证
		//1验证article表也就是当前的
		if(!$this->create()) return false;
		//如果上传失败
		if($error=Upload::getError()){
			//给当前模型压入错误
			$this->error=$error;
			return false;
		}
		//2,验证article_data内容表数据是否符合要求
		//实例化arcData的模型类
		$arcDataModel=new \Common\Model\ArcData;
		//判断自动验证不为真，也就是假运行if里面的语句
		if(!$arcDataModel->create()){
			//把arcData模型的错误，压到当前模型
			//因为控制器显示的错误，就是当前 模型的错误
			$this->$arcDataModel->getError();
			//终止运行，返回false结果
			return false;
			
		}
		//二，添加数据
		//1,article文章表，返回文章的自增id
		//把当前的模型类的数据添加到数据库
		//添加成功，返回受影响的主键id
		$aid=$this->add();
		//2,articel_data文章数据表
		//给模型的data属性值压入值，那么添加的时候就可以添加到数据库
		$arcDataModel->data['article_aid']=$aid;
		$arcDataModel->add();
		//3,article_tag文章中间表
		//实例化中间表
		$arcTagModel=new \Common\Model\ArcTag;
		foreach (Q('post.tid',array()) as $tid){
			$data=array(
				'tag_tid'=>$tid,
				'article_aid'=>$aid
			);
			$arcTagModel->add($data);
		}
		return true;
	}
	//编辑
	public function edit(){
		//一触发两张表的自动验证
		//1验证article
		if(!$this->create()) return false;
		//如果上传失败
		if($error=Upload::getError()){
			//给当前的模型添加爱错误信息
			$this->error=$error;
			return false;
		}
		//2验证article_data
		$arcDataModel=new \Common\Model\ArcData;
		if(!$arcDataModel->create()){
			$this->error=$arcDataModel->getError();
			return false;
		}
		//二修改
		//1.article
		$this->save();
		//2.article_data
		$aid=Q('post.aid',0,'intval');
		$arcDataModel->where("article_aid={$aid}")->save();
		//3article_tag
		//先删除
		$arcTagModel=new \Common\Model\ArcTag;
		$arcTagModel->where("article_aid={$aid}")->delete();
		//再添加
		foreach (Q('post.tid',array()) as $tid){
			$data=array(
				'article_aid'=>$aid,
				'tag_tid'=>$tid
			);
			$arcTagModel->add($data);
		}
		return true;
		
	}
	
	
	
	
	
}



 ?>